package cn.vehicle.biz.event;

import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;

/**
 * 车辆变更事件
 * <p>
 * 自定义 Spring 应用事件，用于在系统中发布车辆数据变更通知。
 * 通常在车辆信息发生更新或需要重新上报政府平台时触发。
 * </p>
 *
 * <p>主要用途：</p>
 * <ul>
 *   <li>在异步任务或监听器中执行车辆上报、日志记录等操作；</li>
 *   <li>解耦业务逻辑，通过事件机制实现模块间通信。</li>
 * </ul>
 */
@Getter
@Setter
public class VehicleChangeEvent extends ApplicationEvent {

    // 车辆主键ID，用于标识被变更或需处理的车辆记录
    private Long id;

    /**
     * 构造车辆变更事件
     *
     * @param source 事件源对象（通常为触发事件的业务类实例）
     * @param id     被变更的车辆主键ID
     */
    public VehicleChangeEvent(Object source, Long id) {
        super(source);
        // 将车辆ID赋值给事件对象，供监听器后续处理
        this.id = id;
    }
}
